package cn.xiaolang.function.slf4jVSlog4j;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 用到：slf4j-log4j12-1.7.10.jar和slf4j-api-1.7.10.jar包
 * <p>
 * SLF4J是日志的接口，log4j是具体的实现：不是具体的日志解决方案，它只服务于各种各样的日志系统。按照官方的说法，
 * SLF4J是一个用于日志系统的简单Facade，允许最终用户在部署其应用时使用其所希望的日志系统。
 * 实际上，SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上，
 * SLF4J有点类似JDBC，不过比JDBC更简单，在JDBC中，你需要指定驱动程序，而在使用SLF4J的时候，
 * 不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样，
 * SLF4J提供了统一的记录日志的接口，只要按照其提供的方法记录即可，最终日志的格式、记录级别、
 * 输出方式等通过具体日志系统的配置来实现，因此可以在应用中灵活切换日志系统。
 */
public class Slf4jDemo {

    private static final Logger LOGGER = LoggerFactory.getLogger(Slf4jDemo.class);

    public static void main(String[] args) {

        LOGGER.warn("ext_param_update_netInfo_failed:uid=%s,netSsid=%s,netPwd=%s", "", "", "pwd");

        String entity = null;
        LOGGER.warn("ext_param_save_to_db_exception entity:{},ex:", entity, new RuntimeException("hello"));
        int id = 12343;
        System.out.println("测试apache的slf4j的用法：");
        if (LOGGER.isDebugEnabled()) {//slf4j的占位符
            LOGGER.debug("This is a debug message!! id:{}", id);
        }
        if (LOGGER.isInfoEnabled()) {
            LOGGER.info("This is a info message!!");
        }
        if (LOGGER.isWarnEnabled()) {
            LOGGER.warn("This is a warn message!!");
        }
        if (LOGGER.isErrorEnabled()) {
            LOGGER.error("This is a error message!!");
        }
        if (LOGGER.isTraceEnabled()) {
            LOGGER.trace("This is a trace message!!");
        }
    }
}
